#include "key.h"

#include "bd_gps.h"
#include "stdio.h"
#include "ble.h"

#include "FreeRTOS.h"
#include "task.h"
#include "cmsis_os.h"


char key_code = 0x00;

extern struct RC_VALUE_STRUCT rc_value_s;

void key_get(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin,uint8_t index);

#define GOAHEAD     0x10
#define GOBACK      0x80
#define GOLEFT      0x40
#define GORIGHT     0x20
#define KEYBLUE     0x08
#define KEYYELLOW   0x04
#define KEYGREEN    0x02
#define KEYRED      0x01

void key_loop(void)
{
    key_get(KEY0_GPIO_Port,KEY0_Pin,0);
    key_get(KEY1_GPIO_Port,KEY1_Pin,1);
    key_get(KEY2_GPIO_Port,KEY2_Pin,2);
    key_get(KEY3_GPIO_Port,KEY3_Pin,3);
    key_get(KEY4_GPIO_Port,KEY4_Pin,4);
    key_get(KEY5_GPIO_Port,KEY5_Pin,5);
    key_get(KEY6_GPIO_Port,KEY6_Pin,6);
    key_get(KEY7_GPIO_Port,KEY7_Pin,7);
    
    if((key_code & GOLEFT) == GOLEFT)
        rc_value_s.rc_data[0] = 500;
    else if((key_code & GORIGHT) == GORIGHT)
        rc_value_s.rc_data[0] = 1500;
    else
        rc_value_s.rc_data[0] = 1000;
    
    if((key_code & GOAHEAD) == GOAHEAD)
        rc_value_s.rc_data[1] = 1500;
    else if((key_code & GOBACK) == GOBACK)
        rc_value_s.rc_data[1] = 500;
    else
        rc_value_s.rc_data[1] = 1000;
    
	rc_value_s.rc_data[2] = 1000;
	rc_value_s.rc_data[3] = 1000;    

}
    
void key_get(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin,uint8_t index)
{
    
    if(HAL_GPIO_ReadPin(GPIOx,GPIO_Pin) == GPIO_PIN_RESET)
    {
        key_code |= (1 << index);
    }else{
        key_code &= ~(1 << index);
    }
}